/* Copyright 203-2115 AtomWare Technology Pty Limited
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 * 
 * The flowing information must be keep 
 * OptionsInterceptor.java
 * jackysoft-basic-core
 * 2013-3-12下午4:06:01
 * @author 屈甲康
 * QQ285799123
 * mailto:qujiakang@gmail.com
 */

package org.jackysoft.interceptor;

import java.lang.reflect.Method;
import java.util.Collection;

import org.jackysoft.query.Query;
import org.jackysoft.util.ReflectionUtil;

import com.opensymphony.xwork2.ActionInvocation;

public class OptionsInterceptor extends AbstractInterceptor {

	/**
	 * 
	 */
	private static final long serialVersionUID = 540015935831130375L;

	@Override
	public String intercept(ActionInvocation invokor) throws Exception {
		super.intercept(invokor);
		Object action = invokor.getAction();
		Query q = (Query) parseBean(action,"query");
		// 获得这个action中所对应的class类型参数
		Method getsPage_Method = service.getClass().getMethod("getOptions",Query.class);
		// 调用service的插入bean方法
		
		Object pageData = getsPage_Method.invoke(service, q);
		
		//Method[]  mds =  action.getClass().getMethods();
		
		Method setOpt = action.getClass().getMethod("setOptions", Collection.class);
		
		setOpt.invoke(action, pageData);
		
		return invokor.invoke();
	}

	
	
}
